package com.nebula.tlggoods.service;

import com.nebula.tlggoods.entity.Goods;
import com.nebula.tlggoods.tools.Record;
import org.apache.ibatis.annotations.Param;

import java.util.List;


/**
 * 商品service接口
 */
public interface GoodsService {


    /**
     * 模糊查询并分页、排序
     *
     * @param pageNum  页码
     * @param pageSize 每页显示条数
     * @param keyword  关键字 用于搜索功能模糊查询商品
     * @param shopId   店铺id  用于查询店铺所有商品
     * @param sortFlag 排序 0综合，1销量，2价格，3访问量
     * @return
     */
    Record findAllByFuzzyNameAndPaging(Integer pageNum, Integer pageSize, String keyword, Integer shopId, Integer sortFlag);


    /**
     * 热门推荐
     *
     * @return
     */
    Record findPopularGoods();

    /**
     * 根据商品编码得到商品详情
     *
     * @param goodsCode 商品编码
     * @return
     */
    Record findGoodsParticularsByGoodsCode(String goodsCode);

    /**
     * 根据三级分类id得到所有同分类商品
     *
     * @param typeId 三级分类id
     * @return
     */
    Record findGoodsByTypeId(Integer typeId);

    /**
     * 相似推荐
     * 根据商品编码得到对应的分类id,查询同分类访问量前十的商品
     *
     * @param goodsCode 商品编码
     * @return
     */
    Record findSimilarityGoods(String goodsCode);

    /**
     * 上下级
     *
     * @param saleId  0下架，1上架
     * @param goodsId 商品id
     * @return
     */
    Record isSale(Integer saleId, Integer goodsId);

    /**
     * 删除商品
     *
     * @param goodsId 商品id
     * @return
     */
    Record delGoods(Integer goodsId);


    /**
     * 统计商品数量
     *
     * @param keyword 关键字
     * @return
     */
    Record countGoodsQuantity(String keyword);


    /**
     * 添加商品
     * @param goods 商品对象
     * @return
     */
    Record saveGoods(Goods goods);


    /**
     * 修改商品
     * @param goods 商品对象
     * @return
     */
    Record modifyGoods(Goods goods);

}
